#1
# 一、定义一个学生Student类。有下面的类属性：
# 1 姓名 name
# 2 年龄 age
# 3 成绩 score（语文，数学，英语) [每课成绩的类型为整数]
# 类方法：
#  1 获取学生的姓名：get_name() 返回类型:str
# 2 获取学生的年龄：get_age() 返回类型:int
# 3 返回3门科目中最高的分数。get_course() 返回类型:int
# 4 将每个实例学生对象写进txt文件里，要持久保存
# 举例：{"姓名":"a","年龄":29,"成绩":{"语文":99,"数学":100,"英语":85}
# 5 获取所有学生的信息
# 写好类以后，可以定义2个同学测试下:
# zm = Student('zhangming',20,[69,88,100])

# class Student:
#     def __init__(self,name,age,score):
#         self.name = name
#         self.age = age
#         self.score = score
#         with open('stu_info.txt','a',encoding='utf-8') as f:
#             f.write(f'"姓名": "{name}", "年龄": {age}, "成绩": {{"语文": {score[0]}, "数学": {score[1]}, "英语": {score[2]} }}'+"\n")
#     def get_name(self):
#         c=str(self.name)
#         return c
#     def get_age(self):
#         d=int(self.age)
#         return d
#     def get_course(self):
#         e=int(max(self.score))
#         return e
#     with open('stu_info.txt','r',encoding='utf-8')as f:
#         print(f.read())
#
#
#
# zm = Student('zhangming',20,[69,88,100])
# print(zm.get_name())
# print(zm.get_age())
# print(zm.get_course())

#2
# 二、定义一个字典类：dictclass。完成下面的功能：
# 1 删除某个key
# 2 判断某个键是否在字典里，如果在返回键对应的值，不存在则返回"not found"
# 3 返回键组成的列表：返回类型;(list)
# 4 合并字典，并且返回合并后字典的values组成的列表。返回类型:(list)
# 重点：随机删除某个key不会
"""
class Dictclass:
    def __init__(self,a:dict):
        self.a=a
    def del_key(self):
        keys = [i for i in self.a.keys()]
        import random
        self.a.pop(random.choice(keys))
    def panduan(self,key):
        if key in self.a:
            return self.a[key]
        else:
            return f"not found {key} "
    def hebin(self,b):

        self.a.update(b)
        return list(self.a.values())




f=Dictclass({"changshuai":1,"zim":2,"name":"adasd"})
f.del_key()
print(f.a)
"""
# print(f.panduan("nihao"))
#
# print(f.hebin({"ashuai":4,"wudi":5}))

# 四、定义一个列表的操作类：Listinfo
# 包括的方法:
# 1 列表元素添加: add_key(keyname) [keyname:字符串或者整数类型]
# 2 列表元素取值：get_key(num) [num:整数类型]
# 3 列表合并：update_list(list) [list:列表类型]
# 4 删除并且返回最后一个元素：del_key()
#
"""
class Listinfo:
    list1=[]
    def add_key(self,keyname):
        if isinstance(keyname,(int,str)):
            Listinfo.list1.append(keyname)
        else:
            print(f"您添加的{keyname}不是字符串或者整数型！")
    def get_key(self,num):
        if int(num) in Listinfo.list1:
            return num
        else:
            return f"您查找的{num}不存在！"
    def index_getnum(self,num1):
        if num1 <= len(Listinfo.list1):
            return Listinfo.list1[num1-1]
        else:
            return f"第{num1}位数不存在！"
    def update_list(self,list2):
        return Listinfo.list1.append(list2)
    def del_key(self):
        del Listinfo.list1[len(Listinfo.list1)-1]
        return Listinfo.list1[-1]



l=Listinfo()
l.add_key("王长帅")
l.add_key(88)
l.add_key(99)
# print(l.get_key(88))
print(l.list1)
print(l.del_key())
"""


# class Listinfo:
#     list1 = []
#     @staticmethod
#     def add_key(keyname):
#         if isinstance(keyname,(str,int)):
#             Listinfo.list1.append(keyname)
#         else:
#             raise TypeError("传入的对象不是字符串、整数类型")
#     @staticmethod
#     def get_key(num):
#         if num <= len(Listinfo.list1):
#             return Listinfo.list1[num-1]
#
#
# l = Listinfo()
# l.add_key("王长帅")
# l.add_key(88)
# l.add_key(99)
# print(l.list1)
# l.get_key(88)

#  五、做一个学生点名系统，系统里支持：存入学生、更改学生、删除学生、点到学生姓名方法
# 存入学生（姓名、年龄、家庭地址、手机号）： 存入成功后，提示xxx存入成功
# 更改学生（姓名、年龄、家庭地址、手机号）：可以修改学生内容的任意一个字段
# 删除学生：删除的学生将不在展示
# 展示全部学生：可以看到全部的学生姓名
# 学生姓名：随机抽取任意一个存在的学生信息，然后打印：到！。举例： 刘闯到！
class Student_system:
    def __init__(self):
        self.all_student=[]
    def serve_1(self,name,age,address,phone):
        student={"name":name,"age":age,"address":address,"phone":phone}
        self.all_student.append(student)
        return f"添加{name}同学成功！"
    def change_student(self,name,new_age=None,new_address=None,new_phone=None):
        for student in self.all_student:
            if student['name'] == name:
                if new_age:
                    student["age"]=new_age
                if new_address:
                    student["address"] = new_address
                if new_phone:
                    student["phone"]=new_phone
                    return f"{name}同学信息修改成功！"
            else:
                 return "找不到您输入的同学！"
    def delete_info(self,name):
        for student in self.all_student:
            if student['name'] == name:
                del student
                return f"删除同学{name}成功！"
    def show_info(self):
        return self.all_student
    def choice_name(self):
        import random
        for student in self.all_student:
            for i in range(1):
                random.choice(student['name'])
                return f"{student['name']}到！"
w=Student_system()
print(w.serve_1('王长帅',21,'鞍山',17602465663))
print(w.change_student('王长帅',23,'鞍山',17602465663))
print(w.choice_name())


            # self.all_student.remove(old_name)









        # 十三、淘宝商家后台，可以上架商品、下架商品，功能如下：
        # （1） 可以添加商品，商家添加完的商品会存到商品列表
        # 1.1
        # 商品要有名称、sku、价格
        # （2） 可以修改商品信息：名称、sku、价格
        # （3） 可以对商品进行下架，下架后的商品不再展示


class TaobaoStore:
    def __init__(self):
        self.product_list = []
    def add_product(self, id,name, sku, price):


        product = {'id':id,'name': name, 'sku': sku, 'price': price, 'status': '上架'}

        self.product_list.append(product)
        print(f'商品 {name} 添加成功！')

    def modify_product(self, sku, new_name=None, new_price=None):
        for product in self.product_list:
            if product['sku'] == sku:
                if new_name:
                    product['name'] = new_name
                if new_price:
                    product['price'] = new_price
                    print(f'商品 {sku} 信息修改成功！')
                    return
            elif product['sku']== None:
                 print(f"{sku}不能为空！")
            print(f'找不到SKU为 {sku} 的商品！')

    def take_off_product(self, sku):
        for product in self.product_list:
            if product['sku'] == sku:
                product['status'] = '下架'
                print(f'商品 {sku} 已下架！')
                return
            print(f'找不到SKU为 {sku} 的商品！')

    def display_products(self):
        print("商品列表:")
        for product in self.product_list:
                print(f"名称: {product['name']}, SKU: {product['sku']}, 价格: {product['price']}, 状态: {product['status']}")


taobao_store = TaobaoStore()

taobao_store.add_product('手机', 'SKU001', 1999.99)
taobao_store.add_product('电脑', 'SKU002', 4999.99)
taobao_store.add_product('耳机', 'SKU003', 199.99)

taobao_store.display_products()

taobao_store.modify_product('SKU001', new_name='新手机', new_price=2299.99)
taobao_store.take_off_product('SKU002')

taobao_store.display_products()

